//package com.hlkj.warboot.configurer.util;
//
//
//import com.itextpdf.text.*;
//import com.itextpdf.text.pdf.*;
//
//import java.io.ByteArrayOutputStream;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.Map;
//import java.util.Set;
//import java.util.stream.Stream;
//
///**
// * @Description: PDF工具类（根据制作好的模板，动态生成PDF文档、并且pdf的每一页打上水印）
// * @Author: lixing
// * @Date: 2020/2/3 09:09
// */
//public class PdfUtil {
//
//
//    public static void main(String[] args) {
//        Map<String, String> data = new HashMap<>(); // 动态添加的数据
//        data.put("pdfurl_in", "C:\\Users\\lixing\\Desktop\\合同.pdf");
//        data.put("pdfurl_out", "C:\\Users\\lixing\\Desktop\\合同_.pdf");
//        data.put("imageurl", "C:\\Users\\lixing\\Desktop\\1.png");
//        data.put("waterMarkName", "辽宁电信");
//
//        PdfReader pdfReader = null; // 读取PDF
//        PdfStamper pdfStamper = null; //
//        AcroFields acroFields = null; // 生成PDF
//        ByteArrayOutputStream bos = null;
//        FileOutputStream fos = null;
//        try {
//            pdfReader = new PdfReader(data.get("pdfurl_in"));
//
//            bos = new ByteArrayOutputStream();
//            pdfStamper = new PdfStamper(pdfReader, bos);
//            acroFields = pdfStamper.getAcroFields();
//
//            //使用中文字体
//            BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
//            acroFields.addSubstitutionFont(bfChinese);
//
//            // 给表单文本域赋值
////            Set<Map.Entry<String, String>> set = data.entrySet();
////            Iterator<Map.Entry<String, String>> it = set.iterator();
////            Map.Entry<String, String> entry = null;
////            while (it.hasNext()) {
////                entry = it.next();
////                if (entry.getValue() != null) {
////                    acroFields.setField(entry.getKey(), entry.getValue());
////                }
////            }
//
//            //设置不能编辑
////            pdfStamper.setFormFlattening(true);
//
//            // TODO 在指定位置添加透明图片（章印）
////            File imgFile = new File(data.get("imageurl"));
////            if (imgFile.exists()) {
////                int pageNo1 = acroFields.getFieldPositions("DZYZ_af_image").get(0).page;
////                Rectangle signRect1 = acroFields.getFieldPositions("DZYZ_af_image").get(0).position;
////                float x1 = signRect1.getLeft();
////                float y1 = signRect1.getBottom();
////                Image image1 = Image.getInstance(data.get("imageurl"));
////                PdfContentByte under1 = pdfStamper.getOverContent(pageNo1);
////                image1.scaleToFit(signRect1.getWidth(), signRect1.getHeight());
////                image1.setAbsolutePosition(x1, y1);
////                under1.addImage(image1);
////            }
//
//            // TODO 为每一页添加水印
//            PdfContentByte under;
//            Rectangle wmRect = pdfStamper.getReader().getPageSizeWithRotation(1);
//            for (int i = 0; i < pdfReader.getNumberOfPages(); i++) {
//                under = pdfStamper.getOverContent(i + 1);
//                under.saveState();
//                // set Transparency
//                PdfGState gs = new PdfGState();
//                // 设置透明度为0.2
//                gs.setFillOpacity(0.2f);
//                under.setGState(gs);
//                under.restoreState();
//                under.beginText();
//                //设置字体和字体大小
//                under.setFontAndSize(bfChinese, 18);
//                under.setTextMatrix(30, 30);
//                under.setColorFill(new BaseColor(179, 185, 181));
//                for (int y = 0; y < 10; y++) {
//                    for (int x = 0; x < 8; x++) {
//                        // 水印文字成35度角倾斜
//                        under.showTextAligned(Element.ALIGN_LEFT, data.get("waterMarkName"), 5 + 260 * x, 260 * y, 35);
//                    }
//                }
//                under.endText();
//                under.setLineWidth(1f);
//                under.stroke();
//            }
//
//            pdfStamper.close();
//            pdfReader.close();
//            fos = new FileOutputStream(data.get("pdfurl_out"));
//            fos.write(bos.toByteArray());
//            fos.flush();
//        } catch (IOException | DocumentException e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                if (fos != null) {
//                    fos.close();
//                }
//                if (bos != null) {
//                    bos.close();
//                }
//                if (pdfReader != null) {
//                    pdfReader.close();
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//    }
//}